import java.awt.Cursor;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

public abstract class Operador {

	protected abstract void iniciar();

	/**
	 * @uml.property name="pontoMouse"
	 */
	protected Coordenada posicaoCursor;

	/**
	 * @uml.property name="painelDesenho"
	 * @uml.associationEnd inverse="operador:PainelDesenho"
	 */
	protected PainelDesenho painelDesenho;
	/**
	 * @uml.property name="identificador"
	 * @uml.associationEnd inverse="operador:Identificador"
	 */
	protected Identificador identificador;
	
	
	public Operador(PainelDesenho painelDesenho) {
		super();
		this.painelDesenho = painelDesenho;
		this.identificador = null;
		;
	}

	/**
			 */
	public void mouseMoved(MouseEvent mouseEvent) {
		posicaoCursor = new Coordenada(mouseEvent.getX(), mouseEvent.getY());
		identificador = painelDesenho.getFluxograma().sob(posicaoCursor);
		painelDesenho.setCursor(Cursor.getDefaultCursor());
	}

	public void mousePressed(MouseEvent mouseEvent) {
		// TODO Auto-generated method stub
		this.posicaoCursor = new Coordenada(mouseEvent.getX(),
				mouseEvent.getY());
		this.identificador = painelDesenho.getFluxograma().sob(posicaoCursor);
		//
		// if (mouseEvent.getClickCount() >= 2 && identificador != null) {
		// // JOptionPane painel = new JOptionPane();
		// // JOptionPane.showConfirmDialog(painel, identificador);
		// // painel.add(new JTextArea());
		// // String texto = JOptionPane.showInputDialog(new
		// // JTextArea(),
		// // identificador.getIdentificacao());
		// // if(texto.length()!=0)
		// // identificador.setIdentificacao(texto);
		//
		// Selecao selecao = identificador.getSelecao();
		// selecao.setSelecionado(Selecionado.TRUE);
		// identificador.setSelecionado(true);
		// painelDesenho.selecionarOperador(Opcao.SELECIONADO);
		//
		// }
		// if(mouseEvent.getButton() == MouseEvent.BUTTON3){
		// System.out.println("BOTAO DO LADO DIREITO");
		//
		// }

	}

	public void mouseDragged(MouseEvent mouseEvent) {
		// TODO Auto-generated method stub
		posicaoCursor = new Coordenada(mouseEvent.getX(), mouseEvent.getY());

	}

	public void mouseReleased(MouseEvent mouseEvent) {
		// TODO Auto-generated method stub
		for (MouseMotionListener mouseMotionListener : painelDesenho
				.getMouseMotionListeners()) {
			mouseMotionListener.mouseMoved(mouseEvent);
		}
		painelDesenho.setCursor(Cursor.getDefaultCursor());

	}

	public Identificador getIdentificador() {
		return identificador;
	}

}